package net.alche.al.util.fa;

import java.util.ArrayList;
import java.util.List;

/**
 * FaQueue队列
 */
public class FaQueue<T> {
  List<T> itemList = new ArrayList<>();

  public void push(T item) {
    itemList.add(item);
  }

  public T last() {
    if (!has())
      return null;
    return itemList.get(itemList.size() - 1);
  }

  public T endIndex(int index) {
    if (has() && itemList.size() > index)
      return itemList.get(itemList.size() - index - 1);
    return null;
  }

  public T pop() {
    if (!has())
      return null;
    T l = last();
    itemList.remove(itemList.size() - 1);
    return l;
  }

  public T get(int index) {
    if (index >= size())
      return null;
    return itemList.get(index);
  }

  // 从index开始向后移除元素
  public void popStartIndex(int i) {
    while (itemList.size() > i) {
      itemList.remove(i);
      break;
    }
  }

  public boolean isEmpty() {
    if (size() > 0)
      return false;
    return true;
  }

  public boolean has() {
    if (size() > 0)
      return true;
    return false;
  }

  public int size() {
    return itemList.size();
  }
}